package com.jxm.security.common;


import io.jsonwebtoken.CompressionCodecs;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;

/**
 * @Author: jxm
 * @Description: token管理类
 * @Date: 2022/5/4 22:27
 * @Version: 1.0
 */
public class TokenUtils {

    //设置Token有效时长,一天时间（毫秒）
    private static long tokenExpiration = 24*60*60*1000;

    //编码密码
    private static String tokenSecurity = "123456";

    /**
     * 使用JWT 根据用户名生成token
     * @param username
     * @return
     */
    public static String createToken(String username){
        String token = Jwts.builder().setSubject(username)
                .setExpiration(new Date(System.currentTimeMillis() + tokenExpiration)) //设置有效时长
                .signWith(SignatureAlgorithm.HS512,tokenSecurity) //设置加密方式，密钥
                .compressWith(CompressionCodecs.GZIP).compact();  //解压算法
        return token;
    }

    /**
     * 根据Token字符串得到用户信息
     */
    public static String getUserInfoFromToken(String token){
        //解析，设置密码，传入token,得到用户信息
        String userInfo  = Jwts.parser().setSigningKey(tokenSecurity).parseClaimsJws(token)
                .getBody()
                .getSubject();
        return userInfo;
    }


    /**
     * 删除token
     */
    public static void removeToken(String token){
        //jwttoken 无需删除，客户端扔掉即可。
    }
}
